package com.wonders.hisdoctor.station.project.record.service;

import cn.hutool.http.server.HttpServerRequest;
import com.wonders.his.common.bean.BaseResult;
import com.wonders.hisdoctor.station.project.base.domain.OutpMr;
import com.wonders.hisdoctor.station.project.hisqueue.vo.ClinicMasterQueryVo;
import com.wonders.hisdoctor.station.project.medicine.vo.QryClinicVO;
import com.wonders.hisdoctor.station.project.record.vo.OutpMrPrintVo;
import com.wonders.hisdoctor.station.project.record.vo.OutpMrVo;
import com.wonders.hisdoctor.station.project.record.vo.OutpRequestVo;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

/**
 * Description:
 *
 * @author tong-aj
 * <p>
 * Create: 2021-01-25 09:48
 */
public interface IRecordService {

    /**
     * 保存病历
     * @param outpMrVo outpMrVo
     * @return BaseResult<String>
     */
    BaseResult<String> saveRecord(OutpMrVo outpMrVo, HttpServletRequest request);

    /**
     * 查看病历
     * @param requestVo requestVo
     * @return BaseResult<OutpMr>
     */
    BaseResult<OutpMrVo> queryRecord(OutpRequestVo requestVo);

    /**
     * 检查是否存在病历，并且病历的诊断是否为空
     * @param requestVo requestVo
     * @return BaseResult<String>
     */
    BaseResult<String> checkDiagnose(OutpRequestVo requestVo);

    /**
    * Description: 根据条件查询打印
    * Param: [patientId, visitDate, visitNo]
    * return: com.wonders.hisdoctor.station.project.record.vo.OutpMrPrintVo
    * Author: tong-aj
    * Date: 2021/3/12
    */
    OutpMrPrintVo print(String patientId, Date visitDate, String visitNo,HttpServletRequest request);

    /**
    * Description: 就诊记录，病历查询
    * Param: [requestVo]
    * return: com.wonders.his.common.bean.BaseResult<com.wonders.hisdoctor.station.project.record.vo.OutpMrVo>
    * Author: tong-aj
    * Date: 2021/3/19
    */
    BaseResult<OutpMrVo> queryRecordHistory(OutpRequestVo requestVo);

    /**
     * 根据下拉框查询病历历史记录
     * @param qryClinicVO qryClinicVO
     * @return List<ClinicMasterQueryVo>
     */
    List<ClinicMasterQueryVo> selectMrList(QryClinicVO qryClinicVO);
}
